#include <iostream>
using namespace std;

// getArr接收一个 int 形参
// getArr 返回一个指针，指针指向一个数组，数组元素为 int
int (*getArr())[3] {
    int *p = new int[3]{ 0, 1, 2 };
    return (int(*)[3])p;
};

// 定义 arrT3 类型为 int[3]
typedef int arrT3[3];

arrT3* getArr2() {
    auto p = new int[3]{ 0, 1, 2 };
    return (arrT3*)p;
};

void test() {
    int arr[10] = { 0 };

    // p2 是一个指向数组的指针，这个数组有 10 个 int
    int (*p2)[10] = &arr;

    auto p3 = getArr(); // p3 的类型：int (*)[3]
    auto arr3 = *p3;    // arr3 的类型：int *
    cout << arr3[0] << " "
         << arr3[1] << " "
         << arr3[2] << endl;

}

int main() {
    test();
    return 0;
}

